package net.suncaper.hotel.service;

import net.suncaper.hotel.common.utils.PageInfo;
import net.suncaper.hotel.model.dto.CheckInDTO;
import net.suncaper.hotel.model.vo.CheckInVO;

import java.math.BigDecimal;

/**
 * 入住服务接口
 */
public interface ICheckInService {
    
    /**
     * 分页查询入住记录
     */
    PageInfo<CheckInVO> getCheckInList(int pageNum, int pageSize);
    
    /**
     * 查询在住客人
     */
    PageInfo<CheckInVO> getCurrentGuests(int pageNum, int pageSize);
    
    /**
     * 根据ID查询入住详情
     */
    CheckInVO getCheckInById(Integer id);
    
    /**
     * 办理入住（基于预订）
     */
    boolean checkInWithReservation(Integer reservationId, Integer operatorId);
    
    /**
     * 办理入住（无预订Walk-in）
     */
    boolean checkInWithoutReservation(CheckInDTO dto, Integer operatorId);
    
    /**
     * 办理退房
     */
    boolean checkOut(Integer id, BigDecimal totalAmount);
    
    /**
     * 更新入住信息
     */
    boolean updateCheckIn(CheckInDTO dto);
}